package com.blrs.mapper;

import com.blrs.domain.MainType;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 主分类Mapper接口
 * 
 * @author yuxiang.chen
 * @date 2023-09-04
 */
public interface MainTypeMapper 
{
    /**
     * 查询主分类
     * 
     * @param id 主分类主键
     * @return 主分类
     */
    public MainType selectMainTypeById(String id);

    /**
     * 查询主分类列表
     * 
     * @param mainType 主分类
     * @return 主分类集合
     */
    public List<MainType> selectMainTypeList(MainType mainType);
    public List<MainType> selectMainTypeListOther(MainType mainType);

    /**
     * 新增主分类
     * 
     * @param mainType 主分类
     * @return 结果
     */
    public int insertMainType(MainType mainType);

    /**
     * 修改主分类
     * 
     * @param mainType 主分类
     * @return 结果
     */
    public int updateMainType(MainType mainType);

    /**
     * 删除主分类
     * 
     * @param id 主分类主键
     * @return 结果
     */
    public int deleteMainTypeById(String id);

    /**
     * 批量删除主分类
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMainTypeByIds(String[] ids);

    List<MainType> selectLikeId(String id);

    /**
     * 判断业务表是否有数据
     * @param id 主分类id
     * @param tableName 表名
     * @return 数量
     */
    @Select("select count(*) from ${tableName} where id_path like concat('%', #{id}, '%')")
    public int count(@Param("id") String id, @Param("tableName") String tableName);

    /**
     * 重名判断
     * @param mainType
     * @return
     */
    @Select("select count(*) from main_type where name=#{name} and type_code=#{typeCode}")
    public int size(MainType mainType);

    @Select("select count(*) from ${tableName} where cabinet_id in (select id from main_type where id_path like concat ('%',#{id},'%'))")
    int countNoPath(@Param("id") String id, @Param("tableName") String tableName);
}
